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

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

Issue 7467002: Revert 93202 - Remove HandleInputEvent from PPP_Instance and freeze to 1.0. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 5 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
« no previous file with comments | « ppapi/proxy/ppp_instance_proxy.h ('k') | ppapi/proxy/ppp_instance_proxy_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/ppp_instance_proxy.h" 5 #include "ppapi/proxy/ppp_instance_proxy.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "ppapi/c/dev/ppb_fullscreen_dev.h" 9 #include "ppapi/c/dev/ppb_fullscreen_dev.h"
10 #include "ppapi/c/pp_var.h" 10 #include "ppapi/c/pp_var.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 instance, *position, *clip, 58 instance, *position, *clip,
59 fullscreen)); 59 fullscreen));
60 } 60 }
61 61
62 void DidChangeFocus(PP_Instance instance, PP_Bool has_focus) { 62 void DidChangeFocus(PP_Instance instance, PP_Bool has_focus) {
63 HostDispatcher::GetForInstance(instance)->Send( 63 HostDispatcher::GetForInstance(instance)->Send(
64 new PpapiMsg_PPPInstance_DidChangeFocus(INTERFACE_ID_PPP_INSTANCE, 64 new PpapiMsg_PPPInstance_DidChangeFocus(INTERFACE_ID_PPP_INSTANCE,
65 instance, has_focus)); 65 instance, has_focus));
66 } 66 }
67 67
68 PP_Bool HandleInputEvent(PP_Instance instance,
69 const PP_InputEvent* event) {
70 PP_Bool result = PP_FALSE;
71 IPC::Message* msg = new PpapiMsg_PPPInstance_HandleInputEvent(
72 INTERFACE_ID_PPP_INSTANCE, instance, *event, &result);
73 // Make this message not unblock, to avoid re-entrancy problems when the
74 // plugin does a synchronous call to the renderer. This will force any
75 // synchronous calls from the plugin to complete before processing this
76 // message. We avoid deadlock by never un-setting the unblock flag on messages
77 // from the plugin to the renderer.
78 msg->set_unblock(false);
79 HostDispatcher::GetForInstance(instance)->Send(msg);
80 return result;
81 }
82
68 PP_Bool HandleDocumentLoad(PP_Instance instance, 83 PP_Bool HandleDocumentLoad(PP_Instance instance,
69 PP_Resource url_loader) { 84 PP_Resource url_loader) {
70 PP_Bool result = PP_FALSE; 85 PP_Bool result = PP_FALSE;
71 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance); 86 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance);
72 87
73 // Set up the URLLoader for proxying. 88 // Set up the URLLoader for proxying.
74 89
75 PPB_URLLoader_Proxy* url_loader_proxy = static_cast<PPB_URLLoader_Proxy*>( 90 PPB_URLLoader_Proxy* url_loader_proxy = static_cast<PPB_URLLoader_Proxy*>(
76 dispatcher->GetOrCreatePPBInterfaceProxy(INTERFACE_ID_PPB_URL_LOADER)); 91 dispatcher->GetOrCreatePPBInterfaceProxy(INTERFACE_ID_PPB_URL_LOADER));
77 url_loader_proxy->PrepareURLLoaderForSendingToPlugin(url_loader); 92 url_loader_proxy->PrepareURLLoaderForSendingToPlugin(url_loader);
(...skipping 12 matching lines...) Expand all
90 } 105 }
91 core->AddRefResource(url_loader); 106 core->AddRefResource(url_loader);
92 107
93 HostResource serialized_loader; 108 HostResource serialized_loader;
94 serialized_loader.SetHostResource(instance, url_loader); 109 serialized_loader.SetHostResource(instance, url_loader);
95 dispatcher->Send(new PpapiMsg_PPPInstance_HandleDocumentLoad( 110 dispatcher->Send(new PpapiMsg_PPPInstance_HandleDocumentLoad(
96 INTERFACE_ID_PPP_INSTANCE, instance, serialized_loader, &result)); 111 INTERFACE_ID_PPP_INSTANCE, instance, serialized_loader, &result));
97 return result; 112 return result;
98 } 113 }
99 114
100 static const PPP_Instance_1_0 instance_interface_1_0 = { 115 static const PPP_Instance_0_5 instance_interface_0_5 = {
101 &DidCreate, 116 &DidCreate,
102 &DidDestroy, 117 &DidDestroy,
103 &DidChangeView, 118 &DidChangeView,
104 &DidChangeFocus, 119 &DidChangeFocus,
120 &HandleInputEvent,
105 &HandleDocumentLoad 121 &HandleDocumentLoad
106 }; 122 };
107 123
108 template <class PPP_Instance_Type> 124 template <class PPP_Instance_Type>
109 InterfaceProxy* CreateInstanceProxy(Dispatcher* dispatcher, 125 InterfaceProxy* CreateInstanceProxy(Dispatcher* dispatcher,
110 const void* target_interface) { 126 const void* target_interface) {
111 return new PPP_Instance_Proxy( 127 return new PPP_Instance_Proxy(
112 dispatcher, 128 dispatcher,
113 static_cast<const PPP_Instance_Type*>(target_interface)); 129 static_cast<const PPP_Instance_Type*>(target_interface));
114 } 130 }
115 131
116 } // namespace 132 } // namespace
117 133
118 PPP_Instance_Proxy::~PPP_Instance_Proxy() { 134 PPP_Instance_Proxy::~PPP_Instance_Proxy() {
119 } 135 }
120 136
121 // static 137 // static
122 const InterfaceProxy::Info* PPP_Instance_Proxy::GetInfo1_0() { 138 const InterfaceProxy::Info* PPP_Instance_Proxy::GetInfo0_5() {
123 static const Info info = { 139 static const Info info = {
124 &instance_interface_1_0, 140 &instance_interface_0_5,
125 PPP_INSTANCE_INTERFACE_1_0, 141 PPP_INSTANCE_INTERFACE_0_5,
126 INTERFACE_ID_PPP_INSTANCE, 142 INTERFACE_ID_PPP_INSTANCE,
127 false, 143 false,
128 &CreateInstanceProxy<PPP_Instance_1_0>, 144 &CreateInstanceProxy<PPP_Instance_0_5>,
129 }; 145 };
130 return &info; 146 return &info;
131 } 147 }
132 148
133 bool PPP_Instance_Proxy::OnMessageReceived(const IPC::Message& msg) { 149 bool PPP_Instance_Proxy::OnMessageReceived(const IPC::Message& msg) {
134 bool handled = true; 150 bool handled = true;
135 IPC_BEGIN_MESSAGE_MAP(PPP_Instance_Proxy, msg) 151 IPC_BEGIN_MESSAGE_MAP(PPP_Instance_Proxy, msg)
136 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidCreate, 152 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidCreate,
137 OnMsgDidCreate) 153 OnMsgDidCreate)
138 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidDestroy, 154 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidDestroy,
139 OnMsgDidDestroy) 155 OnMsgDidDestroy)
140 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidChangeView, 156 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidChangeView,
141 OnMsgDidChangeView) 157 OnMsgDidChangeView)
142 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidChangeFocus, 158 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidChangeFocus,
143 OnMsgDidChangeFocus) 159 OnMsgDidChangeFocus)
160 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_HandleInputEvent,
161 OnMsgHandleInputEvent)
144 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_HandleDocumentLoad, 162 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_HandleDocumentLoad,
145 OnMsgHandleDocumentLoad) 163 OnMsgHandleDocumentLoad)
146 IPC_MESSAGE_UNHANDLED(handled = false) 164 IPC_MESSAGE_UNHANDLED(handled = false)
147 IPC_END_MESSAGE_MAP() 165 IPC_END_MESSAGE_MAP()
148 return handled; 166 return handled;
149 } 167 }
150 168
151 void PPP_Instance_Proxy::OnMsgDidCreate( 169 void PPP_Instance_Proxy::OnMsgDidCreate(
152 PP_Instance instance, 170 PP_Instance instance,
153 const std::vector<std::string>& argn, 171 const std::vector<std::string>& argn,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 data->position = position; 217 data->position = position;
200 data->fullscreen = fullscreen; 218 data->fullscreen = fullscreen;
201 combined_interface_->DidChangeView(instance, &position, &clip); 219 combined_interface_->DidChangeView(instance, &position, &clip);
202 } 220 }
203 221
204 void PPP_Instance_Proxy::OnMsgDidChangeFocus(PP_Instance instance, 222 void PPP_Instance_Proxy::OnMsgDidChangeFocus(PP_Instance instance,
205 PP_Bool has_focus) { 223 PP_Bool has_focus) {
206 combined_interface_->DidChangeFocus(instance, has_focus); 224 combined_interface_->DidChangeFocus(instance, has_focus);
207 } 225 }
208 226
227 void PPP_Instance_Proxy::OnMsgHandleInputEvent(PP_Instance instance,
228 const PP_InputEvent& event,
229 PP_Bool* result) {
230 *result = combined_interface_->HandleInputEvent(instance, &event);
231 }
232
209 void PPP_Instance_Proxy::OnMsgHandleDocumentLoad(PP_Instance instance, 233 void PPP_Instance_Proxy::OnMsgHandleDocumentLoad(PP_Instance instance,
210 const HostResource& url_loader, 234 const HostResource& url_loader,
211 PP_Bool* result) { 235 PP_Bool* result) {
212 PP_Resource plugin_loader = 236 PP_Resource plugin_loader =
213 PPB_URLLoader_Proxy::TrackPluginResource(url_loader); 237 PPB_URLLoader_Proxy::TrackPluginResource(url_loader);
214 *result = combined_interface_->HandleDocumentLoad(instance, plugin_loader); 238 *result = combined_interface_->HandleDocumentLoad(instance, plugin_loader);
215 239
216 // This balances the one reference that TrackPluginResource() initialized it 240 // This balances the one reference that TrackPluginResource() initialized it
217 // with. The plugin will normally take an additional reference which will keep 241 // with. The plugin will normally take an additional reference which will keep
218 // the resource alive in the plugin (and the one reference in the renderer 242 // the resource alive in the plugin (and the one reference in the renderer
219 // representing all plugin references). 243 // representing all plugin references).
220 // Once all references at the plugin side are released, the renderer side will 244 // Once all references at the plugin side are released, the renderer side will
221 // be notified and release the reference added in HandleDocumentLoad() above. 245 // be notified and release the reference added in HandleDocumentLoad() above.
222 PluginResourceTracker::GetInstance()->ReleaseResource(plugin_loader); 246 PluginResourceTracker::GetInstance()->ReleaseResource(plugin_loader);
223 } 247 }
224 248
225 } // namespace proxy 249 } // namespace proxy
226 } // namespace pp 250 } // namespace pp
OLDNEW
« no previous file with comments | « ppapi/proxy/ppp_instance_proxy.h ('k') | ppapi/proxy/ppp_instance_proxy_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698