OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ppapi/proxy/plugin_resource.h" | 5 #include "ppapi/proxy/plugin_resource.h" |
6 | 6 |
7 #include "ppapi/proxy/ppapi_messages.h" | 7 #include "ppapi/proxy/ppapi_messages.h" |
8 #include "ppapi/proxy/resource_message_params.h" | 8 #include "ppapi/proxy/resource_message_params.h" |
9 | 9 |
10 namespace ppapi { | 10 namespace ppapi { |
(...skipping 11 matching lines...) Expand all Loading... |
22 if (sent_create_to_browser_) { | 22 if (sent_create_to_browser_) { |
23 connection_.browser_sender->Send( | 23 connection_.browser_sender->Send( |
24 new PpapiHostMsg_ResourceDestroyed(pp_resource())); | 24 new PpapiHostMsg_ResourceDestroyed(pp_resource())); |
25 } | 25 } |
26 if (sent_create_to_renderer_) { | 26 if (sent_create_to_renderer_) { |
27 connection_.renderer_sender->Send( | 27 connection_.renderer_sender->Send( |
28 new PpapiHostMsg_ResourceDestroyed(pp_resource())); | 28 new PpapiHostMsg_ResourceDestroyed(pp_resource())); |
29 } | 29 } |
30 } | 30 } |
31 | 31 |
| 32 void PluginResource::OnReplyReceived( |
| 33 const proxy::ResourceMessageReplyParams& params, |
| 34 const IPC::Message& msg) { |
| 35 // Grab the callback for the reply sequence number and run it with |msg|. |
| 36 CallbackMap::iterator it = callbacks_.find(params.sequence()); |
| 37 if (it == callbacks_.end()) { |
| 38 DCHECK(false) << "Callback does not exist for an expected sequence number."; |
| 39 } else { |
| 40 scoped_refptr<PluginResourceCallbackBase> callback = it->second; |
| 41 callbacks_.erase(it); |
| 42 callback->Run(params, msg); |
| 43 } |
| 44 } |
| 45 |
32 void PluginResource::SendCreateToBrowser(const IPC::Message& msg) { | 46 void PluginResource::SendCreateToBrowser(const IPC::Message& msg) { |
33 DCHECK(!sent_create_to_browser_); | 47 DCHECK(!sent_create_to_browser_); |
34 sent_create_to_browser_ = true; | 48 sent_create_to_browser_ = true; |
35 ResourceMessageCallParams params(pp_resource(), | 49 ResourceMessageCallParams params(pp_resource(), |
36 next_sequence_number_++); | 50 next_sequence_number_++); |
37 connection_.browser_sender->Send( | 51 connection_.browser_sender->Send( |
38 new PpapiHostMsg_ResourceCreated(params, pp_instance(), msg)); | 52 new PpapiHostMsg_ResourceCreated(params, pp_instance(), msg)); |
39 } | 53 } |
40 | 54 |
41 void PluginResource::SendCreateToRenderer(const IPC::Message& msg) { | 55 void PluginResource::SendCreateToRenderer(const IPC::Message& msg) { |
42 DCHECK(!sent_create_to_renderer_); | 56 DCHECK(!sent_create_to_renderer_); |
43 sent_create_to_renderer_ = true; | 57 sent_create_to_renderer_ = true; |
44 ResourceMessageCallParams params(pp_resource(), | 58 ResourceMessageCallParams params(pp_resource(), |
45 next_sequence_number_++); | 59 next_sequence_number_++); |
46 connection_.renderer_sender->Send( | 60 connection_.renderer_sender->Send( |
47 new PpapiHostMsg_ResourceCreated(params, pp_instance(), msg)); | 61 new PpapiHostMsg_ResourceCreated(params, pp_instance(), msg)); |
48 } | 62 } |
49 | 63 |
50 void PluginResource::PostToBrowser(const IPC::Message& msg) { | 64 void PluginResource::PostToBrowser(const IPC::Message& msg) { |
51 ResourceMessageCallParams params(pp_resource(), | 65 ResourceMessageCallParams params(pp_resource(), |
52 next_sequence_number_++); | 66 next_sequence_number_++); |
53 connection_.browser_sender->Send(new PpapiHostMsg_ResourceCall(params, msg)); | 67 SendResourceCall(connection_.browser_sender, params, msg); |
54 } | 68 } |
55 | 69 |
56 void PluginResource::PostToRenderer(const IPC::Message& msg) { | 70 void PluginResource::PostToRenderer(const IPC::Message& msg) { |
57 ResourceMessageCallParams params(pp_resource(), | 71 ResourceMessageCallParams params(pp_resource(), |
58 next_sequence_number_++); | 72 next_sequence_number_++); |
59 connection_.renderer_sender->Send(new PpapiHostMsg_ResourceCall(params, msg)); | 73 SendResourceCall(connection_.renderer_sender, params, msg); |
60 } | 74 } |
61 | 75 |
62 int32_t PluginResource::CallBrowser(const IPC::Message& msg) { | 76 bool PluginResource::SendResourceCall( |
63 ResourceMessageCallParams params(pp_resource(), | 77 IPC::Sender* sender, |
64 next_sequence_number_++); | 78 const ResourceMessageCallParams& call_params, |
65 params.set_has_callback(); | 79 const IPC::Message& nested_msg) { |
66 connection_.browser_sender->Send(new PpapiHostMsg_ResourceCall(params, msg)); | 80 return sender->Send(new PpapiHostMsg_ResourceCall(call_params, nested_msg)); |
67 return params.sequence(); | |
68 } | |
69 | |
70 int32_t PluginResource::CallRenderer(const IPC::Message& msg) { | |
71 ResourceMessageCallParams params(pp_resource(), | |
72 next_sequence_number_++); | |
73 params.set_has_callback(); | |
74 connection_.renderer_sender->Send(new PpapiHostMsg_ResourceCall(params, msg)); | |
75 return params.sequence(); | |
76 } | 81 } |
77 | 82 |
78 } // namespace proxy | 83 } // namespace proxy |
79 } // namespace ppapi | 84 } // namespace ppapi |
OLD | NEW |