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

Side by Side Diff: ppapi/proxy/plugin_resource.cc

Issue 11022005: Converted PluginResource reply message handling to use base::Callback (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698