OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "webkit/glue/plugins/pepper_var.h" | 5 #include "webkit/glue/plugins/pepper_var.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/scoped_ptr.h" | 8 #include "base/scoped_ptr.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "third_party/ppapi/c/pp_var.h" | 10 #include "third_party/ppapi/c/pp_var.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 public: | 30 public: |
31 TryCatch(PP_Var* exception) : exception_(exception) { | 31 TryCatch(PP_Var* exception) : exception_(exception) { |
32 WebBindings::pushExceptionHandler(&TryCatch::Catch, this); | 32 WebBindings::pushExceptionHandler(&TryCatch::Catch, this); |
33 } | 33 } |
34 | 34 |
35 ~TryCatch() { | 35 ~TryCatch() { |
36 WebBindings::popExceptionHandler(); | 36 WebBindings::popExceptionHandler(); |
37 } | 37 } |
38 | 38 |
39 bool HasException() const { | 39 bool HasException() const { |
40 return exception_ && exception_->type != PP_VarType_Void; | 40 return exception_ && exception_->type != PP_VARTYPE_VOID; |
41 } | 41 } |
42 | 42 |
43 void SetException(const char* message) { | 43 void SetException(const char* message) { |
44 DCHECK(!HasException()); | 44 DCHECK(!HasException()); |
45 if (exception_) | 45 if (exception_) |
46 *exception_ = VarFromUtf8(message, strlen(message)); | 46 *exception_ = VarFromUtf8(message, strlen(message)); |
47 } | 47 } |
48 | 48 |
49 private: | 49 private: |
50 static void Catch(void* self, const NPUTF8* message) { | 50 static void Catch(void* self, const NPUTF8* message) { |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 } | 99 } |
100 NOTREACHED(); | 100 NOTREACHED(); |
101 return PP_MakeVoid(); | 101 return PP_MakeVoid(); |
102 } | 102 } |
103 | 103 |
104 // Returns a NPVariant that corresponds to the given PP_Var. The contents of | 104 // Returns a NPVariant that corresponds to the given PP_Var. The contents of |
105 // the PP_Var will be copied unless the PP_Var corresponds to an object. | 105 // the PP_Var will be copied unless the PP_Var corresponds to an object. |
106 NPVariant PPVarToNPVariant(PP_Var var) { | 106 NPVariant PPVarToNPVariant(PP_Var var) { |
107 NPVariant ret; | 107 NPVariant ret; |
108 switch (var.type) { | 108 switch (var.type) { |
109 case PP_VarType_Void: | 109 case PP_VARTYPE_VOID: |
110 VOID_TO_NPVARIANT(ret); | 110 VOID_TO_NPVARIANT(ret); |
111 break; | 111 break; |
112 case PP_VarType_Null: | 112 case PP_VARTYPE_NULL: |
113 NULL_TO_NPVARIANT(ret); | 113 NULL_TO_NPVARIANT(ret); |
114 break; | 114 break; |
115 case PP_VarType_Bool: | 115 case PP_VARTYPE_BOOL: |
116 BOOLEAN_TO_NPVARIANT(var.value.as_bool, ret); | 116 BOOLEAN_TO_NPVARIANT(var.value.as_bool, ret); |
117 break; | 117 break; |
118 case PP_VarType_Int32: | 118 case PP_VARTYPE_INT32: |
119 INT32_TO_NPVARIANT(var.value.as_int, ret); | 119 INT32_TO_NPVARIANT(var.value.as_int, ret); |
120 break; | 120 break; |
121 case PP_VarType_Double: | 121 case PP_VARTYPE_DOUBLE: |
122 DOUBLE_TO_NPVARIANT(var.value.as_double, ret); | 122 DOUBLE_TO_NPVARIANT(var.value.as_double, ret); |
123 break; | 123 break; |
124 case PP_VarType_String: { | 124 case PP_VARTYPE_STRING: { |
125 const std::string& value = GetStringUnchecked(var)->value(); | 125 const std::string& value = GetStringUnchecked(var)->value(); |
126 STRINGN_TO_NPVARIANT(base::strdup(value.c_str()), value.size(), ret); | 126 STRINGN_TO_NPVARIANT(base::strdup(value.c_str()), value.size(), ret); |
127 break; | 127 break; |
128 } | 128 } |
129 case PP_VarType_Object: { | 129 case PP_VARTYPE_OBJECT: { |
130 NPObject* object = GetNPObjectUnchecked(var); | 130 NPObject* object = GetNPObjectUnchecked(var); |
131 OBJECT_TO_NPVARIANT(WebBindings::retainObject(object), ret); | 131 OBJECT_TO_NPVARIANT(WebBindings::retainObject(object), ret); |
132 break; | 132 break; |
133 } | 133 } |
134 } | 134 } |
135 return ret; | 135 return ret; |
136 } | 136 } |
137 | 137 |
138 // Returns a NPVariant that corresponds to the given PP_Var. The contents of | 138 // Returns a NPVariant that corresponds to the given PP_Var. The contents of |
139 // the PP_Var will NOT be copied, so you need to ensure that the PP_Var remains | 139 // the PP_Var will NOT be copied, so you need to ensure that the PP_Var remains |
140 // valid while the resultant NPVariant is in use. | 140 // valid while the resultant NPVariant is in use. |
141 NPVariant PPVarToNPVariantNoCopy(PP_Var var) { | 141 NPVariant PPVarToNPVariantNoCopy(PP_Var var) { |
142 NPVariant ret; | 142 NPVariant ret; |
143 switch (var.type) { | 143 switch (var.type) { |
144 case PP_VarType_Void: | 144 case PP_VARTYPE_VOID: |
145 VOID_TO_NPVARIANT(ret); | 145 VOID_TO_NPVARIANT(ret); |
146 break; | 146 break; |
147 case PP_VarType_Null: | 147 case PP_VARTYPE_NULL: |
148 NULL_TO_NPVARIANT(ret); | 148 NULL_TO_NPVARIANT(ret); |
149 break; | 149 break; |
150 case PP_VarType_Bool: | 150 case PP_VARTYPE_BOOL: |
151 BOOLEAN_TO_NPVARIANT(var.value.as_bool, ret); | 151 BOOLEAN_TO_NPVARIANT(var.value.as_bool, ret); |
152 break; | 152 break; |
153 case PP_VarType_Int32: | 153 case PP_VARTYPE_INT32: |
154 INT32_TO_NPVARIANT(var.value.as_int, ret); | 154 INT32_TO_NPVARIANT(var.value.as_int, ret); |
155 break; | 155 break; |
156 case PP_VarType_Double: | 156 case PP_VARTYPE_DOUBLE: |
157 DOUBLE_TO_NPVARIANT(var.value.as_double, ret); | 157 DOUBLE_TO_NPVARIANT(var.value.as_double, ret); |
158 break; | 158 break; |
159 case PP_VarType_String: { | 159 case PP_VARTYPE_STRING: { |
160 const std::string& value = GetStringUnchecked(var)->value(); | 160 const std::string& value = GetStringUnchecked(var)->value(); |
161 STRINGN_TO_NPVARIANT(value.c_str(), value.size(), ret); | 161 STRINGN_TO_NPVARIANT(value.c_str(), value.size(), ret); |
162 break; | 162 break; |
163 } | 163 } |
164 case PP_VarType_Object: { | 164 case PP_VARTYPE_OBJECT: { |
165 OBJECT_TO_NPVARIANT(GetNPObjectUnchecked(var), ret); | 165 OBJECT_TO_NPVARIANT(GetNPObjectUnchecked(var), ret); |
166 break; | 166 break; |
167 } | 167 } |
168 } | 168 } |
169 return ret; | 169 return ret; |
170 } | 170 } |
171 | 171 |
172 // Returns a NPIdentifier that corresponds to the given PP_Var. The contents | 172 // Returns a NPIdentifier that corresponds to the given PP_Var. The contents |
173 // of the PP_Var will be copied. Returns NULL if the given PP_Var is not a a | 173 // of the PP_Var will be copied. Returns NULL if the given PP_Var is not a a |
174 // string or integer type. | 174 // string or integer type. |
175 NPIdentifier PPVarToNPIdentifier(PP_Var var) { | 175 NPIdentifier PPVarToNPIdentifier(PP_Var var) { |
176 switch (var.type) { | 176 switch (var.type) { |
177 case PP_VarType_String: | 177 case PP_VARTYPE_STRING: |
178 return WebBindings::getStringIdentifier( | 178 return WebBindings::getStringIdentifier( |
179 GetStringUnchecked(var)->value().c_str()); | 179 GetStringUnchecked(var)->value().c_str()); |
180 case PP_VarType_Int32: | 180 case PP_VARTYPE_INT32: |
181 return WebBindings::getIntIdentifier(var.value.as_int); | 181 return WebBindings::getIntIdentifier(var.value.as_int); |
182 default: | 182 default: |
183 return NULL; | 183 return NULL; |
184 } | 184 } |
185 } | 185 } |
186 | 186 |
187 PP_Var NPIdentifierToPPVar(NPIdentifier id) { | 187 PP_Var NPIdentifierToPPVar(NPIdentifier id) { |
188 const NPUTF8* string_value = NULL; | 188 const NPUTF8* string_value = NULL; |
189 int32_t int_value = 0; | 189 int32_t int_value = 0; |
190 bool is_string = false; | 190 bool is_string = false; |
191 WebBindings::extractIdentifierData(id, string_value, int_value, is_string); | 191 WebBindings::extractIdentifierData(id, string_value, int_value, is_string); |
192 if (is_string) | 192 if (is_string) |
193 return VarFromUtf8(string_value, strlen(string_value)); | 193 return VarFromUtf8(string_value, strlen(string_value)); |
194 | 194 |
195 return PP_MakeInt32(int_value); | 195 return PP_MakeInt32(int_value); |
196 } | 196 } |
197 | 197 |
198 PP_Var NPIdentifierToPPVarString(NPIdentifier id) { | 198 PP_Var NPIdentifierToPPVarString(NPIdentifier id) { |
199 PP_Var var = NPIdentifierToPPVar(id); | 199 PP_Var var = NPIdentifierToPPVar(id); |
200 if (var.type == PP_VarType_String) | 200 if (var.type == PP_VARTYPE_STRING) |
201 return var; | 201 return var; |
202 DCHECK(var.type == PP_VarType_Int32); | 202 DCHECK(var.type == PP_VARTYPE_INT32); |
203 const std::string& str = IntToString(var.value.as_int); | 203 const std::string& str = IntToString(var.value.as_int); |
204 return VarFromUtf8(str.data(), str.size()); | 204 return VarFromUtf8(str.data(), str.size()); |
205 } | 205 } |
206 | 206 |
207 void ThrowException(NPObject* object, PP_Var exception) { | 207 void ThrowException(NPObject* object, PP_Var exception) { |
208 String* str = GetString(exception); | 208 String* str = GetString(exception); |
209 if (str) | 209 if (str) |
210 WebBindings::setException(object, str->value().c_str()); | 210 WebBindings::setException(object, str->value().c_str()); |
211 } | 211 } |
212 | 212 |
(...skipping 26 matching lines...) Expand all Loading... |
239 bool WrapperClass_HasMethod(NPObject* object, NPIdentifier method_name) { | 239 bool WrapperClass_HasMethod(NPObject* object, NPIdentifier method_name) { |
240 WrapperObject* wrapper = ToWrapper(object); | 240 WrapperObject* wrapper = ToWrapper(object); |
241 | 241 |
242 PP_Var method_name_var = NPIdentifierToPPVarString(method_name); | 242 PP_Var method_name_var = NPIdentifierToPPVarString(method_name); |
243 PP_Var exception = PP_MakeVoid(); | 243 PP_Var exception = PP_MakeVoid(); |
244 bool rv = wrapper->ppp_class->HasMethod(wrapper->ppp_class_data, | 244 bool rv = wrapper->ppp_class->HasMethod(wrapper->ppp_class_data, |
245 method_name_var, | 245 method_name_var, |
246 &exception); | 246 &exception); |
247 Release(method_name_var); | 247 Release(method_name_var); |
248 | 248 |
249 if (exception.type != PP_VarType_Void) { | 249 if (exception.type != PP_VARTYPE_VOID) { |
250 ThrowException(object, exception); | 250 ThrowException(object, exception); |
251 Release(exception); | 251 Release(exception); |
252 return false; | 252 return false; |
253 } | 253 } |
254 return rv; | 254 return rv; |
255 } | 255 } |
256 | 256 |
257 bool WrapperClass_Invoke(NPObject* object, NPIdentifier method_name, | 257 bool WrapperClass_Invoke(NPObject* object, NPIdentifier method_name, |
258 const NPVariant* argv, uint32_t argc, | 258 const NPVariant* argv, uint32_t argc, |
259 NPVariant* result) { | 259 NPVariant* result) { |
260 WrapperObject* wrapper = ToWrapper(object); | 260 WrapperObject* wrapper = ToWrapper(object); |
261 | 261 |
262 scoped_array<PP_Var> args; | 262 scoped_array<PP_Var> args; |
263 if (argc) { | 263 if (argc) { |
264 args.reset(new PP_Var[argc]); | 264 args.reset(new PP_Var[argc]); |
265 for (uint32_t i = 0; i < argc; ++i) | 265 for (uint32_t i = 0; i < argc; ++i) |
266 args[i] = NPVariantToPPVar(&argv[i]); | 266 args[i] = NPVariantToPPVar(&argv[i]); |
267 } | 267 } |
268 PP_Var method_name_var = NPIdentifierToPPVarString(method_name); | 268 PP_Var method_name_var = NPIdentifierToPPVarString(method_name); |
269 PP_Var exception = PP_MakeVoid(); | 269 PP_Var exception = PP_MakeVoid(); |
270 PP_Var result_var = wrapper->ppp_class->Call(wrapper->ppp_class_data, | 270 PP_Var result_var = wrapper->ppp_class->Call(wrapper->ppp_class_data, |
271 method_name_var, argc, | 271 method_name_var, argc, |
272 args.get(), &exception); | 272 args.get(), &exception); |
273 Release(method_name_var); | 273 Release(method_name_var); |
274 for (uint32_t i = 0; i < argc; ++i) | 274 for (uint32_t i = 0; i < argc; ++i) |
275 Release(args[i]); | 275 Release(args[i]); |
276 | 276 |
277 bool rv; | 277 bool rv; |
278 if (exception.type == PP_VarType_Void) { | 278 if (exception.type == PP_VARTYPE_VOID) { |
279 rv = true; | 279 rv = true; |
280 *result = PPVarToNPVariant(result_var); | 280 *result = PPVarToNPVariant(result_var); |
281 } else { | 281 } else { |
282 rv = false; | 282 rv = false; |
283 ThrowException(object, exception); | 283 ThrowException(object, exception); |
284 Release(exception); | 284 Release(exception); |
285 } | 285 } |
286 Release(result_var); | 286 Release(result_var); |
287 return rv; | 287 return rv; |
288 } | 288 } |
289 | 289 |
290 bool WrapperClass_InvokeDefault(NPObject* object, const NPVariant* argv, | 290 bool WrapperClass_InvokeDefault(NPObject* object, const NPVariant* argv, |
291 uint32_t argc, NPVariant* result) { | 291 uint32_t argc, NPVariant* result) { |
292 WrapperObject* wrapper = ToWrapper(object); | 292 WrapperObject* wrapper = ToWrapper(object); |
293 | 293 |
294 scoped_array<PP_Var> args; | 294 scoped_array<PP_Var> args; |
295 if (argc) { | 295 if (argc) { |
296 args.reset(new PP_Var[argc]); | 296 args.reset(new PP_Var[argc]); |
297 for (uint32_t i = 0; i < argc; ++i) | 297 for (uint32_t i = 0; i < argc; ++i) |
298 args[i] = NPVariantToPPVar(&argv[i]); | 298 args[i] = NPVariantToPPVar(&argv[i]); |
299 } | 299 } |
300 PP_Var exception = PP_MakeVoid(); | 300 PP_Var exception = PP_MakeVoid(); |
301 PP_Var result_var = wrapper->ppp_class->Call(wrapper->ppp_class_data, | 301 PP_Var result_var = wrapper->ppp_class->Call(wrapper->ppp_class_data, |
302 PP_MakeVoid(), argc, args.get(), | 302 PP_MakeVoid(), argc, args.get(), |
303 &exception); | 303 &exception); |
304 for (uint32_t i = 0; i < argc; ++i) | 304 for (uint32_t i = 0; i < argc; ++i) |
305 Release(args[i]); | 305 Release(args[i]); |
306 | 306 |
307 bool rv; | 307 bool rv; |
308 if (exception.type == PP_VarType_Void) { | 308 if (exception.type == PP_VARTYPE_VOID) { |
309 rv = true; | 309 rv = true; |
310 *result = PPVarToNPVariant(result_var); | 310 *result = PPVarToNPVariant(result_var); |
311 } else { | 311 } else { |
312 rv = false; | 312 rv = false; |
313 ThrowException(object, exception); | 313 ThrowException(object, exception); |
314 Release(exception); | 314 Release(exception); |
315 } | 315 } |
316 Release(result_var); | 316 Release(result_var); |
317 return rv; | 317 return rv; |
318 } | 318 } |
319 | 319 |
320 bool WrapperClass_HasProperty(NPObject* object, NPIdentifier property_name) { | 320 bool WrapperClass_HasProperty(NPObject* object, NPIdentifier property_name) { |
321 WrapperObject* wrapper = ToWrapper(object); | 321 WrapperObject* wrapper = ToWrapper(object); |
322 | 322 |
323 PP_Var property_name_var = NPIdentifierToPPVar(property_name); | 323 PP_Var property_name_var = NPIdentifierToPPVar(property_name); |
324 PP_Var exception = PP_MakeVoid(); | 324 PP_Var exception = PP_MakeVoid(); |
325 bool rv = wrapper->ppp_class->HasProperty(wrapper->ppp_class_data, | 325 bool rv = wrapper->ppp_class->HasProperty(wrapper->ppp_class_data, |
326 property_name_var, | 326 property_name_var, |
327 &exception); | 327 &exception); |
328 Release(property_name_var); | 328 Release(property_name_var); |
329 | 329 |
330 if (exception.type != PP_VarType_Void) { | 330 if (exception.type != PP_VARTYPE_VOID) { |
331 ThrowException(object, exception); | 331 ThrowException(object, exception); |
332 Release(exception); | 332 Release(exception); |
333 return false; | 333 return false; |
334 } | 334 } |
335 return rv; | 335 return rv; |
336 } | 336 } |
337 | 337 |
338 bool WrapperClass_GetProperty(NPObject* object, NPIdentifier property_name, | 338 bool WrapperClass_GetProperty(NPObject* object, NPIdentifier property_name, |
339 NPVariant* result) { | 339 NPVariant* result) { |
340 WrapperObject* wrapper = ToWrapper(object); | 340 WrapperObject* wrapper = ToWrapper(object); |
341 | 341 |
342 PP_Var property_name_var = NPIdentifierToPPVar(property_name); | 342 PP_Var property_name_var = NPIdentifierToPPVar(property_name); |
343 PP_Var exception = PP_MakeVoid(); | 343 PP_Var exception = PP_MakeVoid(); |
344 PP_Var result_var = wrapper->ppp_class->GetProperty(wrapper->ppp_class_data, | 344 PP_Var result_var = wrapper->ppp_class->GetProperty(wrapper->ppp_class_data, |
345 property_name_var, | 345 property_name_var, |
346 &exception); | 346 &exception); |
347 Release(property_name_var); | 347 Release(property_name_var); |
348 | 348 |
349 bool rv; | 349 bool rv; |
350 if (exception.type == PP_VarType_Void) { | 350 if (exception.type == PP_VARTYPE_VOID) { |
351 rv = true; | 351 rv = true; |
352 *result = PPVarToNPVariant(result_var); | 352 *result = PPVarToNPVariant(result_var); |
353 } else { | 353 } else { |
354 rv = false; | 354 rv = false; |
355 ThrowException(object, exception); | 355 ThrowException(object, exception); |
356 Release(exception); | 356 Release(exception); |
357 } | 357 } |
358 Release(result_var); | 358 Release(result_var); |
359 return rv; | 359 return rv; |
360 } | 360 } |
361 | 361 |
362 bool WrapperClass_SetProperty(NPObject* object, NPIdentifier property_name, | 362 bool WrapperClass_SetProperty(NPObject* object, NPIdentifier property_name, |
363 const NPVariant* value) { | 363 const NPVariant* value) { |
364 WrapperObject* wrapper = ToWrapper(object); | 364 WrapperObject* wrapper = ToWrapper(object); |
365 | 365 |
366 PP_Var property_name_var = NPIdentifierToPPVar(property_name); | 366 PP_Var property_name_var = NPIdentifierToPPVar(property_name); |
367 PP_Var value_var = NPVariantToPPVar(value); | 367 PP_Var value_var = NPVariantToPPVar(value); |
368 PP_Var exception = PP_MakeVoid(); | 368 PP_Var exception = PP_MakeVoid(); |
369 wrapper->ppp_class->SetProperty(wrapper->ppp_class_data, property_name_var, | 369 wrapper->ppp_class->SetProperty(wrapper->ppp_class_data, property_name_var, |
370 value_var, &exception); | 370 value_var, &exception); |
371 Release(value_var); | 371 Release(value_var); |
372 Release(property_name_var); | 372 Release(property_name_var); |
373 | 373 |
374 if (exception.type != PP_VarType_Void) { | 374 if (exception.type != PP_VARTYPE_VOID) { |
375 ThrowException(object, exception); | 375 ThrowException(object, exception); |
376 Release(exception); | 376 Release(exception); |
377 return false; | 377 return false; |
378 } | 378 } |
379 return true; | 379 return true; |
380 } | 380 } |
381 | 381 |
382 bool WrapperClass_RemoveProperty(NPObject* object, NPIdentifier property_name) { | 382 bool WrapperClass_RemoveProperty(NPObject* object, NPIdentifier property_name) { |
383 WrapperObject* wrapper = ToWrapper(object); | 383 WrapperObject* wrapper = ToWrapper(object); |
384 | 384 |
385 PP_Var property_name_var = NPIdentifierToPPVar(property_name); | 385 PP_Var property_name_var = NPIdentifierToPPVar(property_name); |
386 PP_Var exception = PP_MakeVoid(); | 386 PP_Var exception = PP_MakeVoid(); |
387 wrapper->ppp_class->RemoveProperty(wrapper->ppp_class_data, property_name_var, | 387 wrapper->ppp_class->RemoveProperty(wrapper->ppp_class_data, property_name_var, |
388 &exception); | 388 &exception); |
389 Release(property_name_var); | 389 Release(property_name_var); |
390 | 390 |
391 if (exception.type != PP_VarType_Void) { | 391 if (exception.type != PP_VARTYPE_VOID) { |
392 ThrowException(object, exception); | 392 ThrowException(object, exception); |
393 Release(exception); | 393 Release(exception); |
394 return false; | 394 return false; |
395 } | 395 } |
396 return true; | 396 return true; |
397 } | 397 } |
398 | 398 |
399 bool WrapperClass_Enumerate(NPObject* object, NPIdentifier** values, | 399 bool WrapperClass_Enumerate(NPObject* object, NPIdentifier** values, |
400 uint32_t* count) { | 400 uint32_t* count) { |
401 WrapperObject* wrapper = ToWrapper(object); | 401 WrapperObject* wrapper = ToWrapper(object); |
402 | 402 |
403 uint32_t property_count = 0; | 403 uint32_t property_count = 0; |
404 PP_Var* properties = NULL; | 404 PP_Var* properties = NULL; |
405 PP_Var exception = PP_MakeVoid(); | 405 PP_Var exception = PP_MakeVoid(); |
406 wrapper->ppp_class->GetAllPropertyNames(wrapper->ppp_class_data, | 406 wrapper->ppp_class->GetAllPropertyNames(wrapper->ppp_class_data, |
407 &property_count, | 407 &property_count, |
408 &properties, | 408 &properties, |
409 &exception); | 409 &exception); |
410 | 410 |
411 bool rv; | 411 bool rv; |
412 if (exception.type == PP_VarType_Void) { | 412 if (exception.type == PP_VARTYPE_VOID) { |
413 rv = true; | 413 rv = true; |
414 if (property_count == 0) { | 414 if (property_count == 0) { |
415 *values = NULL; | 415 *values = NULL; |
416 *count = 0; | 416 *count = 0; |
417 } else { | 417 } else { |
418 *values = static_cast<NPIdentifier*>( | 418 *values = static_cast<NPIdentifier*>( |
419 malloc(sizeof(NPIdentifier) * property_count)); | 419 malloc(sizeof(NPIdentifier) * property_count)); |
420 *count = property_count; | 420 *count = property_count; |
421 for (uint32_t i = 0; i < property_count; ++i) | 421 for (uint32_t i = 0; i < property_count; ++i) |
422 (*values)[i] = PPVarToNPIdentifier(properties[i]); | 422 (*values)[i] = PPVarToNPIdentifier(properties[i]); |
(...skipping 22 matching lines...) Expand all Loading... |
445 } | 445 } |
446 | 446 |
447 PP_Var exception = PP_MakeVoid(); | 447 PP_Var exception = PP_MakeVoid(); |
448 PP_Var result_var = wrapper->ppp_class->Construct(wrapper->ppp_class_data, | 448 PP_Var result_var = wrapper->ppp_class->Construct(wrapper->ppp_class_data, |
449 argc, args.get(), | 449 argc, args.get(), |
450 &exception); | 450 &exception); |
451 for (uint32_t i = 0; i < argc; ++i) | 451 for (uint32_t i = 0; i < argc; ++i) |
452 Release(args[i]); | 452 Release(args[i]); |
453 | 453 |
454 bool rv; | 454 bool rv; |
455 if (exception.type == PP_VarType_Void) { | 455 if (exception.type == PP_VARTYPE_VOID) { |
456 rv = true; | 456 rv = true; |
457 *result = PPVarToNPVariant(result_var); | 457 *result = PPVarToNPVariant(result_var); |
458 } else { | 458 } else { |
459 rv = false; | 459 rv = false; |
460 ThrowException(object, exception); | 460 ThrowException(object, exception); |
461 Release(exception); | 461 Release(exception); |
462 } | 462 } |
463 Release(result_var); | 463 Release(result_var); |
464 return rv; | 464 return rv; |
465 } | 465 } |
(...skipping 11 matching lines...) Expand all Loading... |
477 WrapperClass_SetProperty, | 477 WrapperClass_SetProperty, |
478 WrapperClass_RemoveProperty, | 478 WrapperClass_RemoveProperty, |
479 WrapperClass_Enumerate, | 479 WrapperClass_Enumerate, |
480 WrapperClass_Construct | 480 WrapperClass_Construct |
481 }; | 481 }; |
482 | 482 |
483 // --------------------------------------------------------------------------- | 483 // --------------------------------------------------------------------------- |
484 // PPB_Var methods | 484 // PPB_Var methods |
485 | 485 |
486 void AddRef(PP_Var var) { | 486 void AddRef(PP_Var var) { |
487 if (var.type == PP_VarType_String) { | 487 if (var.type == PP_VARTYPE_STRING) { |
488 GetStringUnchecked(var)->AddRef(); | 488 GetStringUnchecked(var)->AddRef(); |
489 } else if (var.type == PP_VarType_Object) { | 489 } else if (var.type == PP_VARTYPE_OBJECT) { |
490 // TODO(darin): Add thread safety check | 490 // TODO(darin): Add thread safety check |
491 WebBindings::retainObject(GetNPObjectUnchecked(var)); | 491 WebBindings::retainObject(GetNPObjectUnchecked(var)); |
492 } | 492 } |
493 } | 493 } |
494 | 494 |
495 void Release(PP_Var var) { | 495 void Release(PP_Var var) { |
496 if (var.type == PP_VarType_String) { | 496 if (var.type == PP_VARTYPE_STRING) { |
497 GetStringUnchecked(var)->Release(); | 497 GetStringUnchecked(var)->Release(); |
498 } else if (var.type == PP_VarType_Object) { | 498 } else if (var.type == PP_VARTYPE_OBJECT) { |
499 // TODO(darin): Add thread safety check | 499 // TODO(darin): Add thread safety check |
500 WebBindings::releaseObject(GetNPObjectUnchecked(var)); | 500 WebBindings::releaseObject(GetNPObjectUnchecked(var)); |
501 } | 501 } |
502 } | 502 } |
503 | 503 |
504 PP_Var VarFromUtf8(const char* data, uint32_t len) { | 504 PP_Var VarFromUtf8(const char* data, uint32_t len) { |
505 String* str = new String(data, len); | 505 String* str = new String(data, len); |
506 str->AddRef(); // This is for the caller, we return w/ a refcount of 1. | 506 str->AddRef(); // This is for the caller, we return w/ a refcount of 1. |
507 PP_Var ret; | 507 PP_Var ret; |
508 ret.type = PP_VarType_String; | 508 ret.type = PP_VARTYPE_STRING; |
509 ret.value.as_id = reinterpret_cast<intptr_t>(str); | 509 ret.value.as_id = reinterpret_cast<intptr_t>(str); |
510 return ret; | 510 return ret; |
511 } | 511 } |
512 | 512 |
513 const char* VarToUtf8(PP_Var var, uint32_t* len) { | 513 const char* VarToUtf8(PP_Var var, uint32_t* len) { |
514 if (var.type != PP_VarType_String) { | 514 if (var.type != PP_VARTYPE_STRING) { |
515 *len = 0; | 515 *len = 0; |
516 return NULL; | 516 return NULL; |
517 } | 517 } |
518 const std::string& str = GetStringUnchecked(var)->value(); | 518 const std::string& str = GetStringUnchecked(var)->value(); |
519 *len = static_cast<uint32_t>(str.size()); | 519 *len = static_cast<uint32_t>(str.size()); |
520 if (str.empty()) | 520 if (str.empty()) |
521 return ""; // Don't return NULL on success. | 521 return ""; // Don't return NULL on success. |
522 return str.data(); | 522 return str.data(); |
523 } | 523 } |
524 | 524 |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 if (try_catch.HasException()) | 694 if (try_catch.HasException()) |
695 return PP_MakeVoid(); | 695 return PP_MakeVoid(); |
696 | 696 |
697 NPObject* object = GetNPObject(var); | 697 NPObject* object = GetNPObject(var); |
698 if (!object) { | 698 if (!object) { |
699 try_catch.SetException(kInvalidObjectException); | 699 try_catch.SetException(kInvalidObjectException); |
700 return PP_MakeVoid(); | 700 return PP_MakeVoid(); |
701 } | 701 } |
702 | 702 |
703 NPIdentifier identifier; | 703 NPIdentifier identifier; |
704 if (method_name.type == PP_VarType_Void) { | 704 if (method_name.type == PP_VARTYPE_VOID) { |
705 identifier = NULL; | 705 identifier = NULL; |
706 } else if (method_name.type == PP_VarType_String) { | 706 } else if (method_name.type == PP_VARTYPE_STRING) { |
707 // Specifically allow only string functions to be called. | 707 // Specifically allow only string functions to be called. |
708 identifier = PPVarToNPIdentifier(method_name); | 708 identifier = PPVarToNPIdentifier(method_name); |
709 if (!identifier) { | 709 if (!identifier) { |
710 try_catch.SetException(kInvalidPropertyException); | 710 try_catch.SetException(kInvalidPropertyException); |
711 return PP_MakeVoid(); | 711 return PP_MakeVoid(); |
712 } | 712 } |
713 } else { | 713 } else { |
714 try_catch.SetException(kInvalidPropertyException); | 714 try_catch.SetException(kInvalidPropertyException); |
715 return PP_MakeVoid(); | 715 return PP_MakeVoid(); |
716 } | 716 } |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 }; | 824 }; |
825 | 825 |
826 } // namespace | 826 } // namespace |
827 | 827 |
828 const PPB_Var* GetVarInterface() { | 828 const PPB_Var* GetVarInterface() { |
829 return &var_interface; | 829 return &var_interface; |
830 } | 830 } |
831 | 831 |
832 PP_Var NPObjectToPPVar(NPObject* object) { | 832 PP_Var NPObjectToPPVar(NPObject* object) { |
833 PP_Var ret; | 833 PP_Var ret; |
834 ret.type = PP_VarType_Object; | 834 ret.type = PP_VARTYPE_OBJECT; |
835 ret.value.as_id = reinterpret_cast<intptr_t>(object); | 835 ret.value.as_id = reinterpret_cast<intptr_t>(object); |
836 WebBindings::retainObject(object); | 836 WebBindings::retainObject(object); |
837 return ret; | 837 return ret; |
838 } | 838 } |
839 | 839 |
840 NPObject* GetNPObject(PP_Var var) { | 840 NPObject* GetNPObject(PP_Var var) { |
841 if (var.type != PP_VarType_Object) | 841 if (var.type != PP_VARTYPE_OBJECT) |
842 return NULL; | 842 return NULL; |
843 return GetNPObjectUnchecked(var); | 843 return GetNPObjectUnchecked(var); |
844 } | 844 } |
845 | 845 |
846 PP_Var StringToPPVar(const std::string& str) { | 846 PP_Var StringToPPVar(const std::string& str) { |
847 DCHECK(IsStringUTF8(str)); | 847 DCHECK(IsStringUTF8(str)); |
848 return VarFromUtf8(str.data(), str.size()); | 848 return VarFromUtf8(str.data(), str.size()); |
849 } | 849 } |
850 | 850 |
851 String* GetString(PP_Var var) { | 851 String* GetString(PP_Var var) { |
852 if (var.type != PP_VarType_String) | 852 if (var.type != PP_VARTYPE_STRING) |
853 return NULL; | 853 return NULL; |
854 return GetStringUnchecked(var); | 854 return GetStringUnchecked(var); |
855 } | 855 } |
856 | 856 |
857 } // namespace pepper | 857 } // namespace pepper |
OLD | NEW |