OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "chrome/plugin/npobject_util.h" | 5 #include "chrome/plugin/npobject_util.h" |
6 | 6 |
7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
8 #include "chrome/common/plugin_messages.h" | 8 #include "chrome/common/plugin_messages.h" |
9 #include "chrome/plugin/npobject_proxy.h" | 9 #include "chrome/plugin/npobject_proxy.h" |
10 #include "chrome/plugin/plugin_channel_base.h" | 10 #include "chrome/plugin/plugin_channel_base.h" |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 } | 131 } |
132 | 132 |
133 NPIdentifier CreateNPIdentifier(const NPIdentifier_Param& param) { | 133 NPIdentifier CreateNPIdentifier(const NPIdentifier_Param& param) { |
134 return param.identifier; | 134 return param.identifier; |
135 } | 135 } |
136 | 136 |
137 void CreateNPVariantParam(const NPVariant& variant, | 137 void CreateNPVariantParam(const NPVariant& variant, |
138 PluginChannelBase* channel, | 138 PluginChannelBase* channel, |
139 NPVariant_Param* param, | 139 NPVariant_Param* param, |
140 bool release, | 140 bool release, |
141 base::WaitableEvent* modal_dialog_event) { | 141 base::WaitableEvent* modal_dialog_event, |
| 142 const GURL& page_url) { |
142 switch (variant.type) { | 143 switch (variant.type) { |
143 case NPVariantType_Void: | 144 case NPVariantType_Void: |
144 param->type = NPVARIANT_PARAM_VOID; | 145 param->type = NPVARIANT_PARAM_VOID; |
145 break; | 146 break; |
146 case NPVariantType_Null: | 147 case NPVariantType_Null: |
147 param->type = NPVARIANT_PARAM_NULL; | 148 param->type = NPVARIANT_PARAM_NULL; |
148 break; | 149 break; |
149 case NPVariantType_Bool: | 150 case NPVariantType_Bool: |
150 param->type = NPVARIANT_PARAM_BOOL; | 151 param->type = NPVARIANT_PARAM_BOOL; |
151 param->bool_value = variant.value.boolValue; | 152 param->bool_value = variant.value.boolValue; |
(...skipping 24 matching lines...) Expand all Loading... |
176 } else { | 177 } else { |
177 // The channel could be NULL if there was a channel error. The caller's | 178 // The channel could be NULL if there was a channel error. The caller's |
178 // Send call will fail anyways. | 179 // Send call will fail anyways. |
179 if (channel) { | 180 if (channel) { |
180 // NPObjectStub adds its own reference to the NPObject it owns, so if | 181 // NPObjectStub adds its own reference to the NPObject it owns, so if |
181 // we were supposed to release the corresponding variant | 182 // we were supposed to release the corresponding variant |
182 // (release==true), we should still do that. | 183 // (release==true), we should still do that. |
183 param->type = NPVARIANT_PARAM_OBJECT_ROUTING_ID; | 184 param->type = NPVARIANT_PARAM_OBJECT_ROUTING_ID; |
184 int route_id = channel->GenerateRouteID(); | 185 int route_id = channel->GenerateRouteID(); |
185 new NPObjectStub( | 186 new NPObjectStub( |
186 variant.value.objectValue, channel, route_id, modal_dialog_event); | 187 variant.value.objectValue, channel, route_id, modal_dialog_event, |
| 188 page_url); |
187 param->npobject_routing_id = route_id; | 189 param->npobject_routing_id = route_id; |
188 param->npobject_pointer = | 190 param->npobject_pointer = |
189 reinterpret_cast<intptr_t>(variant.value.objectValue); | 191 reinterpret_cast<intptr_t>(variant.value.objectValue); |
190 } else { | 192 } else { |
191 param->type = NPVARIANT_PARAM_VOID; | 193 param->type = NPVARIANT_PARAM_VOID; |
192 } | 194 } |
193 } | 195 } |
194 break; | 196 break; |
195 } | 197 } |
196 default: | 198 default: |
197 NOTREACHED(); | 199 NOTREACHED(); |
198 } | 200 } |
199 | 201 |
200 if (release) | 202 if (release) |
201 NPN_ReleaseVariantValue(const_cast<NPVariant*>(&variant)); | 203 NPN_ReleaseVariantValue(const_cast<NPVariant*>(&variant)); |
202 } | 204 } |
203 | 205 |
204 void CreateNPVariant(const NPVariant_Param& param, | 206 void CreateNPVariant(const NPVariant_Param& param, |
205 PluginChannelBase* channel, | 207 PluginChannelBase* channel, |
206 NPVariant* result, | 208 NPVariant* result, |
207 base::WaitableEvent* modal_dialog_event) { | 209 base::WaitableEvent* modal_dialog_event, |
| 210 const GURL& page_url) { |
208 switch (param.type) { | 211 switch (param.type) { |
209 case NPVARIANT_PARAM_VOID: | 212 case NPVARIANT_PARAM_VOID: |
210 result->type = NPVariantType_Void; | 213 result->type = NPVariantType_Void; |
211 break; | 214 break; |
212 case NPVARIANT_PARAM_NULL: | 215 case NPVARIANT_PARAM_NULL: |
213 result->type = NPVariantType_Null; | 216 result->type = NPVariantType_Null; |
214 break; | 217 break; |
215 case NPVARIANT_PARAM_BOOL: | 218 case NPVARIANT_PARAM_BOOL: |
216 result->type = NPVariantType_Bool; | 219 result->type = NPVariantType_Bool; |
217 result->value.boolValue = param.bool_value; | 220 result->value.boolValue = param.bool_value; |
(...skipping 12 matching lines...) Expand all Loading... |
230 static_cast<NPUTF8 *>(base::strdup(param.string_value.c_str())); | 233 static_cast<NPUTF8 *>(base::strdup(param.string_value.c_str())); |
231 result->value.stringValue.UTF8Length = | 234 result->value.stringValue.UTF8Length = |
232 static_cast<int>(param.string_value.size()); | 235 static_cast<int>(param.string_value.size()); |
233 break; | 236 break; |
234 case NPVARIANT_PARAM_OBJECT_ROUTING_ID: | 237 case NPVARIANT_PARAM_OBJECT_ROUTING_ID: |
235 result->type = NPVariantType_Object; | 238 result->type = NPVariantType_Object; |
236 result->value.objectValue = | 239 result->value.objectValue = |
237 NPObjectProxy::Create(channel, | 240 NPObjectProxy::Create(channel, |
238 param.npobject_routing_id, | 241 param.npobject_routing_id, |
239 param.npobject_pointer, | 242 param.npobject_pointer, |
240 modal_dialog_event); | 243 modal_dialog_event, |
| 244 page_url); |
241 break; | 245 break; |
242 case NPVARIANT_PARAM_OBJECT_POINTER: | 246 case NPVARIANT_PARAM_OBJECT_POINTER: |
243 result->type = NPVariantType_Object; | 247 result->type = NPVariantType_Object; |
244 result->value.objectValue = | 248 result->value.objectValue = |
245 reinterpret_cast<NPObject*>(param.npobject_pointer); | 249 reinterpret_cast<NPObject*>(param.npobject_pointer); |
246 NPN_RetainObject(result->value.objectValue); | 250 NPN_RetainObject(result->value.objectValue); |
247 break; | 251 break; |
248 default: | 252 default: |
249 NOTREACHED(); | 253 NOTREACHED(); |
250 } | 254 } |
251 } | 255 } |
OLD | NEW |